/*
 * ZTCoverAttribute.h
 * ZorgloThèque
 * 
 * Created by Benjamin Dehalu on 4/04/10.
 * 
 * Copyright (c) 2010 Zorglo Software
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * 
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * Neither the name of the project's author nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#import <Cocoa/Cocoa.h>


@interface ZTCoverAttribute : NSObject {
	NSString *zImageName;
	BOOL zVert;
	NSUInteger zPosition; 
	// Binary representation of the position (0 is the position), + guard.
	// For example: 
	// Position 1/4: 11110
	// Position 4/8: 111110111
	NSUInteger zMask;
	// Value in binary form should be:
	// 1 -> allowed together
	// 0 -> forbidden together
	// If 1 zero only, then this attribute will replace the targer
	// If more, in case of conflicts, nothing is done.
	NSUInteger zComplPosition; // Complementary of Position
	CALayer* zLayer;
	CGPoint zInitialPosition;
	NSUInteger zInsertedAtPosition;
	
	BOOL zSelected;
	
	NSString *zVolumeKey;
}

@property (getter=imageName, setter=setImageName, copy) NSString * zImageName;
@property (getter=vert, setter=setVert) BOOL zVert;
@property (getter=position, setter=setPosition) NSUInteger zPosition;
@property (getter=complPosition, setter=setComplPosition) NSUInteger zComplPosition;
@property (getter=mask, setter=setMask) NSUInteger zMask;
@property (getter=layer, setter=setLayer) CALayer * zLayer;
@property (getter=initialPosition, setter=setInitialPosition) CGPoint zInitialPosition;
@property (getter=insertedAtPosition, setter=setInsertedAtPosition) NSUInteger zInsertedAtPosition;
@property (getter=selected, setter=setSelected) BOOL zSelected;
@property (getter=volumeKey, setter=setVolumeKey, copy) NSString * zVolumeKey;

- (void)drawLayer:(CALayer *)theLayer
        inContext:(CGContextRef)theContext;

@end
